package es.ugr.beequizz.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import es.ugr.beequizz.dao.DificultadDAO;
import es.ugr.beequizz.dao.GenericDAO;
import es.ugr.beequizz.model.Dificultad;
import es.ugr.beequizz.model.DificultadEnum;

@Repository
public class DificultadDAOImpl extends GenericDAO implements DificultadDAO {

	private static final String BUSCAR_DIFICULTAD_SQL = "SELECT * FROM dificultad ";
	private static final String RECUPERAR_NOMBRE_DIFICULTAD_SQL = "SELECT label FROM dificultad WHERE id = :id"; 
	
	// Permite convertir le resultado de la "requete" en objeto (bean)
	private class DificultadRowMapper implements RowMapper<Dificultad> {

		public Dificultad mapRow(ResultSet result, int arg1) throws SQLException {
			Dificultad dificultad = new Dificultad();
			dificultad.setId(result.getLong("id"));
			dificultad.setNivel(DificultadEnum.valueOf(result.getString("nivel")));
			dificultad.setLabel(result.getString("label"));
			
			return dificultad;
		}
		
		
	}
	
	
	public List<Dificultad> buscarDificultad() {
		// Recuperacion de los datos de la base
		return template.query(BUSCAR_DIFICULTAD_SQL, new DificultadRowMapper());
		
	}


	public String getNombre(Long idAsignatura) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("id", idAsignatura);
		return namedTemplate.queryForObject(RECUPERAR_NOMBRE_DIFICULTAD_SQL, params, String.class);
	}
	
}
